perm filename SOFTWA[LET,RWF] blob sn#873340 filedate 1989-05-11 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	``Software engineering'' vs. software engineering
C00010 ENDMK
CāŠ—;
``Software engineering'' vs. software engineering

Robert L. Baber, software engineer

As a software developer of long standing (30-plus years), I subscribe to and
fully support the transition of our field from an art/craft/trade to an 
engineering discipline.  However, as an engineer (electrical) by education,
I deeply resent the misuse of the word ``engineering'' in the compound
term ``software engineering.''  Such misuse constitutes, in my opinion, a
cheap, deceptive attempt to take advantage of the professional reputation
and image developed by real engineers over a century or so without acquiring
a comparable level of professional knowledge, qualification, and capability.
In short, it constitutes theft of professional reputation.

What does ``software engineering'' mean today?  The term commonly refers
to a certain collection of ideas and views regarding the software development
process and relevant management principles.  Most literature on the subject covers
topics such as the software life cycle, design procedures and tools, user-developer
interaction, specifying software systems, organizing documentaion, estimating
development cost and time, and project planning and management.  Useful as this
material may be, it does not in any way capture the essence of engineering;
it would not be recognized by engineers in the classical fields as ``engineering.''

What does the term ``engineering'' really mean?  The application of scientific
knowledge and principles to the task of designing and constructing a device,
machine, or system of economic value is probably  the most characteristic
aspect of engineering.  Especially noteworthy is that the engineer employs
a scientific, theoretical foundation to verify--by systematic calculation and 
before the object is actually built--that a proposed design will satisfy the 
specifications.

Thus, the terms ``software engineering'' is typically used in the literature and
``engineering'' as understood by real engineers have nothing in common.  They
refer to quite different aspects of their respective fields.  In others words,
``software engineering'' as outlined above is not engineering; it is better
described as ``software development management,'' perhaps even ``software
engineering management.''  If one insists on a more impressive buzz word, I
suggest something like ``Integrated Software Life Cycle Management'' (ISLCM).

Several recent discussons with engineer acquaintances made it painfully clear to
me that a significant number of true engineers do not take us and our claims
to be ``engineers'' very seriously.  Our misuse of the word ``engineering'' leads
them to conclude that we do not understand what engineering is really all
about.  Their attitude toward us as would-be professionals seems to be in
transition from sceptical scorn to rational rejection.  If our misuse of the
term ``engineering'' continues and grows, our true engineering brethren
will, sooner or later, feel compelled to isolate us from their midst to protect
their hard-earned profesional reputation and image.  They cannot afford to allow
that reputation to be damaged by terminological association with us and our buggy
software.  Such isolation would be unfortunate for both groups, but more so for  us.

Another unfortunate consequence of our misuse of the term ``engineering'' is that
we deceive ourselves into believing that the kit bag we call ``software 
engineering'' will bring our software to the same level of reliability
and quality as that long since achieved in the classical engineering fields.
But just calling something ``engineering'' does not make in engineering.
Engineers in other fields did not achieve their impressive technical results
by employing ideas, approaches, and methods corresponding to those comprising
our ``software engineering,'' and there is no convincing evidence that these
will do the trick for software, either.  Success in classical engineering
derives from a thorough understanding of the scientific, theoretical, and
mathematical foundations of the engineer's field and an ability to apply this
understanding to practical problems.

Software development can and should be a true engineering discipline.  Let's not 
make the term ``software engineering'' meaningless before this new field has had a
chance to form and prove itself.  Instead, let's buckle down and get started on the
hard mental work necessary to turn our field into a real engineering 
discipline.
\bye